#  引入合适的模块
import cv2 as cv
from skimage import io
import matplotlib.pyplot as plt

img = io.imread('stop.jpg')
#  得到红色主导色部分掩模
avg = cv.imread('stop.jpg', 0)  # 1.  得到均值灰度图

r = img[:, :, 0]  # 2.  得到红色通道灰度图

mask = r > avg * 1.5  # 3.  得到红色主导色掩模  mask(严格系数为1.5)

img2 = io.imread('stop.jpg')

img2[mask] = [0, 0, 255]  # 红色主导色部分改为蓝色

img3 = io.imread('stop.jpg')

img3[mask] = [0, 0, 0]  # 只保留非红色主导色部分

img4 = io.imread('stop.jpg')

img4[r <= avg * 1.5] = [0, 0, 0]  # 只保留红色主导色部分

fg, ax = plt.subplots(1, 5, figsize=(20, 4))
ax[0].imshow(img)
ax[0].set_title('stop.jpg')
ax[1].imshow(mask, cmap='gray')
ax[1].set_title('mask')
ax[2].imshow(img2)
ax[2].set_title('red  ->  blue')
ax[3].imshow(img3)
ax[3].set_title('only  backgroud')
ax[4].imshow(img4)
ax[4].set_title('only  masked')

#  调整子图位置
#  以最紧凑模式把plt.show()对应内容保存显示内容到  out.png
plt.tight_layout()
plt.savefig('out.png', bbox_inches='tight')
plt.show()